package com.sunxcloud.common.core.constant;

import org.springframework.cloud.stream.annotation.Input;
import org.springframework.cloud.stream.annotation.Output;
import org.springframework.messaging.MessageChannel;
import org.springframework.messaging.SubscribableChannel;

/**
 * 自定义消息通道，包含一个生产者和一个消费者通道
 */
public interface IProcessor {

    /**
     * 生产者通道名称，对应yml配置文件中spring.cloud.stream.bindings.output-message，名称必须相同
     */
    String OUTPUT_MESSAGE = "output-message";

    /**
     * 生产者通道
     */
    @Output(IProcessor.OUTPUT_MESSAGE)
    MessageChannel outputMessage();

    /**
     * 消费者通道的名称，对应yml配置文件中spring.cloud.stream.bindings.input-message，名称必须相同
     */
    String INPUT_MESSAGE = "input-message";

    /**
     * 消费者通道
     */
    @Input(IProcessor.INPUT_MESSAGE)
    SubscribableChannel inputMessage();
}
